if ve vyctu

Otázka od: LUKES Václav

9. 9. 2002 19:09


Ahoj,

rad bych vas poprosil o radu. Mam D5 a Win 2000.
Lze udelat neco podobneho ?

IF promenna IN ['A', 'F'] THEN

Jde mi o ten vycet IN.


Diky.

V.

Odpovedá: Lebeda David

9. 9. 2002 13:42

> IF promenna IN ['A', 'F'] THEN

Ahoj,

odpovidam bez Delphi, ale snad to bude pravda:

1) Takhle, jak jsi to napsal, by to melo fungovat, ale s ohledem na bod 2

2) Pascalske mnoziny mohou pojmout tusim max. 256 prvku, a i typ, z nehoz se
mnozina bere, tusim nesmi pojmout vice hodnot. Z toho plyne, ze mnoziny nad
typem char budou OK, v pripade mnozin cisel nesmi jit o vysoke hodnoty (nad
255).
Viz help o typu SET.

David Lebeda

Odpovedá: Karel Dušek

10. 9. 2002 8:09

IF promenna IN ['A'..'F'] THEN



----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, September 09, 2002 12:47 PM
Subject: if ve vyctu



Ahoj,

rad bych vas poprosil o radu. Mam D5 a Win 2000.
Lze udelat neco podobneho ?

IF promenna IN ['A', 'F'] THEN

Jde mi o ten vycet IN.


Diky.

V.


Odpovedá: LUKES Václav

10. 9. 2002 18:58

Diky za radu. U CHAR to funguje. A jak to bude u STRINGu ? Jde to ?

A co v CASE ?
Jak obejit tohle:

CASE promenna OF
  'A': ...;
  'B': ...;
END;


Vasek




-----Original Message-----
From: Karel Dušek [mailto:Karel.Dusek@oku-tu.cz]
Sent: Tuesday, September 10, 2002 6:41 AM
To: delphi-l@clexpert.cz
Subject: Re: if ve vyctu


IF promenna IN ['A'..'F'] THEN



----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, September 09, 2002 12:47 PM
Subject: if ve vyctu



Ahoj,

rad bych vas poprosil o radu. Mam D5 a Win 2000.
Lze udelat neco podobneho ?

IF promenna IN ['A', 'F'] THEN

Jde mi o ten vycet IN.


Diky.

V.


Odpovedá: Jan Sebelík

10. 9. 2002 18:45

> Odesílatel: LUKES Václav <lukes@ans.cz>
> IF promenna IN ['A', 'F'] THEN

Za IN musi byt mnozina.
Mnozina musi byt "set of OrdinalniTyp", ovsem max. 255 prvku.
S mnozinami lze provadet mnozinove operace
+ sjenoceni
* prunik
- "odecteni"
['a'..'z','A'..'Z'] "intervalovy" zapis

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: Petr Vones

10. 9. 2002 17:21

From: "LUKES Václav" <lukes@ans.cz>
> Diky za radu. U CHAR to funguje. A jak to bude u STRINGu ? Jde to ?

U stringu to samozrejme nepujde, protoze to neni ordinalni typ. Vice treba v
helpu pod heslem 'Case statements'.

Petr Vones

Odpovedá: Petr Vones

10. 9. 2002 22:43

From: "Jakub Dusek" <jdev@seznam.cz>
> Nijak, Pascal je stale pozadu (aspon v mem Delphi 4.0) a case umoznuje

Dobre, predpokladejme ze by to umoznoval a zapis by vypadal treba takto:

case S of
  'jedna': ....
  'dva': ...
end.

Jakym zpusobem se ma porovnavat ten string ? Jako ASCII nebo Ansi, maji se
rozlisovat mala a velka pismena, MBCS ? Navic prekladac pri case pouziva
tabulky pro optimalizaci coz by v tomto pripade nebylo dost dobre mozne.

Petr Vones

Odpovedá: ing. Jan Fiala

11. 9. 2002 6:02

Co to znamena pozadu ? To je proste znak jazyka.
To bys mohl tvrdit, ze Basic je pozadu, protoze ti umozni strcit do
te same promenne cokoliv (jednou cislo, jindy retezec). Je to preste
znak jazyka.

Pokud stojis o porovnani uznych retezcu muzes to udelat nejak takto:
if s = 'jelen' then ... else
if s = 'srnec' then ... else
  else ...

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

10.9.2002 Jakub Dusek:
> Nijak, Pascal je stale pozadu (aspon v mem Delphi 4.0) a case umoznuje
> jen u ordinalnich typu.

Odpovedá: Martin Kleiner

11. 9. 2002 16:11

String by se mel porovnat naprosto stejne jako pri konstrukci
if S = 'jedna' then ...
Je to ciste zalezitost parseru pascalu ktery by takovyto CASE vyhodnotil
jako sekvenci IF THEN ELSE.
S ANSI nebo CASE SENSITIVE to nema vubec nic spolecneho, natoz s tabulkami
pro optimalizaci, ktere se tykaji ordinalnich hodnot.

Martin Kleiner

> Dobre, predpokladejme ze by to umoznoval a zapis by vypadal treba takto:
>
> case S of
> 'jedna': ....
> 'dva': ...
> end.
>
> Jakym zpusobem se ma porovnavat ten string ? Jako ASCII nebo Ansi, maji se
> rozlisovat mala a velka pismena, MBCS ? Navic prekladac pri case pouziva
> tabulky pro optimalizaci coz by v tomto pripade nebylo dost dobre mozne.
>
> Petr Vones

Odpovedá: Skopalik Slavomir

12. 9. 2002 11:57

Myslim, ze by to hodne pomohlo pri vyvoji aplikace,
stejne to nakonec skonci u tech if else, tady navic
muze compiler provest vetveni metodou puleni intervalu,
pokud je tech pripadu hodne, nebo zrusit pocatecni pismenka, pokud tyto pripady
zacinaji stejne.
On by uplne stacil preprocesor, ktery by generoval ty ify.

 Slavek

> Dobre, predpokladejme ze by to umoznoval a zapis by vypadal treba takto:
>
> case S of
> 'jedna': ....
> 'dva': ...
> end.
>

Odpovedá: Erik Salaj

13. 9. 2002 1:38

> > case S of
> > 'jedna': ....
> > 'dva': ...
> > end.

> Myslim, ze by to hodne pomohlo pri vyvoji aplikace,
> stejne to nakonec skonci u tech if else, tady navic
> muze compiler provest vetveni metodou puleni intervalu,
> pokud je tech pripadu hodne, nebo zrusit pocatecni pismenka, pokud tyto
pripady zacinaji stejne.
> On by uplne stacil preprocesor, ktery by generoval ty ify.

pre zaujimavost: C# umoznuje viaccestne vetvenie podla string hodnoty

Erik

Odpovedá: Jakub Dusek

10. 9. 2002 21:05

Nijak, Pascal je stale pozadu (aspon v mem Delphi 4.0) a case umoznuje
jen u ordinalnich typu.
Cili:

if promenna = 'A' then
...
else
if promenna = 'B' then
...
else
if promenna = 'C' then
...
else
...

Jakub Dusek

-------------------------------------------
Homepage : http://dusek.webz.cz
Phone : +420604615795
Sms email : jakub.dusek@click.cz
ICQ: 86063232
Apps : Add/Remove Manager, Charmaper,
            Sms GateKeeper
-------------------------------------------

Tuesday, September 10, 2002, 10:29:18 AM, you wrote:

LV> Diky za radu. U CHAR to funguje. A jak to bude u STRINGu ? Jde to ?

LV> A co v CASE ?
LV> Jak obejit tohle:

LV> CASE promenna OF
LV> 'A': ...;
LV> 'B': ...;
LV> END;


LV> Vasek




LV> -----Original Message-----
LV> From: Karel Dušek [mailto:Karel.Dusek@oku-tu.cz]
LV> Sent: Tuesday, September 10, 2002 6:41 AM
LV> To: delphi-l@clexpert.cz
LV> Subject: Re: if ve vyctu


LV> IF promenna IN ['A'..'F'] THEN



LV> ----- Original Message -----
LV> From: "LUKES Václav" <lukes@ans.cz>
LV> To: <delphi-l@clexpert.cz>
LV> Sent: Monday, September 09, 2002 12:47 PM
LV> Subject: if ve vyctu



LV> Ahoj,

LV> rad bych vas poprosil o radu. Mam D5 a Win 2000.
LV> Lze udelat neco podobneho ?

LV> IF promenna IN ['A', 'F'] THEN

LV> Jde mi o ten vycet IN.


LV> Diky.

LV> V.